home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48_1
/
vt52_dj
< prev
next >
Wrap
Internet Message Format
|
1995-03-31
|
29KB
From: Dave Jansen <eldorado@ecn.purdue.edu>
Subject: v05i022: vt52_dj - vt52 Terminal Emulator v1.5, Part01/01
Newsgroups: comp.sources.hp48
Followup-To: comp.sys.hp48
Approved: spell@seq.uncwil.edu
Checksum: 1081197545 (verify with brik -cv)
Submitted-by: Dave Jansen <eldorado@ecn.purdue.edu>
Posting-number: Volume 5, Issue 22
Archive-name: vt52_dj/part01
BEGIN_DOC vt52.doc
The following is a DEC VT52 terminal emulator for the HP48SX. It emulates
every vt52 command except for the Keypad mode (kind of redundant on the HP)
and the special graphics characters (perhaps in a latter version). The one
drawback, like other communication programs for the HP48, is speed. Because
it is slow, after the recieve buffer (which is 256 characters long) fills up,
it looses the rest of the characters sent. Buffering the receive buffer will
not work since at 9600 baud the buffer fills up in about 3 hundredths of a
second. Nevertheless, since fewer than 256 characters can fit on the screen
at one time, it can easily display a screenful of information at a time.
One method to stop loosing characters is to set the IOPAR to
use XON/XOFF, any make sure that the XON/XOFF are sent through the modem
and used at the receiver end. I have tried this and it works well.
Directions
1. VT52 - execute the program
2. if you wish to do a file transfer, quit (press ATTN) and perform the
Kermit transfer, then just run the program again to continue.
Keyboard
The keyboard of the HP48 was redefined as the following.
1 2 3 4 5 6
A B C D E F
1 a b c d e f
^A ^B ^C ^D ^E ^F
G H I J K L
2 g h i j k l
^G ^H ^I ^J ^K ^L
M N O P Q R
3 m n o p q r
^M ^N ^O ^P ^Q ^R
S T U V W X
4 s t u v w x
^S ^T ^U ^V ^W ^X
ENTER Y Z
5 ENTER y z DELETE BACKSPACE
ENTER ^Y ^Z
{ < ( [
6 ESCAPE 7 8 9 /
\ } > ) ]
CAP LOC $ % ^ &
7 SHIFT 4 5 6 *
QUIT CHR(28) CHR(29) CHR(30) CHR(31)
, ~ ` '
8 CONTROL 1 2 3 -
BREAK ; @ # "
= ? _ |
9 ATTN 0 . SPACE +
CHR(0) ! TAB :
The labels above the numbered row is the left shift key. Labels on the
same line as the numbers are the default values and labels under the
numbered lines are the right shift values. The numbers are the row and
column of the keyboard. Quitting by pressing ON leaves the port open and is
not necessary even to stay online. All 128 ASCII characters are accessible
from the keyboard. I suggest getting a template and writing the above table
on it for easiest use.
I have added the capability to change the font size. This will make screen
sizes of 6x22, 8x22, 10x22, 10x26, 10x33. It will be necessary to edit the
program and change the csize, ch, and cw variables to one of the following
formats:
6x22
csize 3
cw 6
ch 10
8x22 default value
csize 2
cw 6
ch 8
10x22
csize 1
cw 6
ch 6
10x26
csize 1
cw 5
ch 6
10x33
csize 1
cw 4
ch 6
Send suggestions, comments, complains to:
________________________________________________________________________________
Dave Jansen | INTERNET: eldorado@en.ecn.purdue.edu
Electrical Engineering | BITNET: eldorado%ea.ecn.purdue.edu@purccvm
Purdue University | UUCP: {purdue, pur-ee}!en.ecn.purdue.edu!eldorado
END_DOC
BEGIN_RPL vt52.rpl
%%HP: T(3)A(D)F(.);
\<< # 0d # 0d "" ""
"" "" # 0d # 0d
# 0d # 0d # 0d # 0d
# 131d 2 # 8d # 6d
\-> col row cur spc
char keymap es bs
lr lc wi hi el
csize ch cw
\<<
\<< PICT col row
2 \->LIST DUP2 col wi
+ row hi + 2 \->LIST
SUB 'char' STO cur
REPL
\>> \-> get
\<<
\<< 51 13 146
13 241 13 54 127 55
8 284 9 275 34 282
0 201 1 202 2 203 3
204 4 205 5 206 6
211 7 212 8 213 9
214 10 215 11 216
12 221 13 222 14
223 15 224 16 225
17 226 18 231 19
232 20 233 21 234
22 235 23 236 24
242 25 243 26 61 27
262 28 263 29 264
30 265 31
"..........abcdef....ghijkl....mnopqr....stuvwx.....yz........789/......456*......123-......0. +..........ABCDEF....GHIJKL....MNOPQR....STUVWX.....YZ........{<([......$%^&......,~`'......=?_|..........ABCDEF....GHIJKL....MNOPQR....STUVWX.....YZ.......\\}>)]................;@#........!.:"
1 39
START ROT
ROT CHR REPL
NEXT
'keymap' STO
\>>
\<< PICT col
row 2 \->LIST char
REPL
IF row lr <
THEN ch
'row' STO+
ELSE PICT
DUP { # 0d # 0d }
OVER # 0d ch 2
\->LIST el es 2 \->LIST
SUB REPL # 0d lr 2
\->LIST el ch BLANK
REPL
END get
EVAL
\>> \-> addcntrl
nl
\<<
\<< csize
\->GROB PICT col row
2 \->LIST ROT REPL
'col' STO+
IF col el
>
THEN # 0d
'col' STO get EVAL
nl EVAL
ELSE get
EVAL
END
\>>
\<< DROP
WHILE
BUFLEN DROP NOT
REPEAT
END 1
SRECV DROP NUM
CASE DUP
65 ==
THEN
PICT col row 2
\->LIST char REPL
IF
row hi >
THEN
'row' ch STO-
END
get EVAL
END DUP
66 ==
THEN
PICT col row 2
\->LIST char REPL
IF
row lr <
THEN
ch 'row' STO+
END
get EVAL
END DUP
67 ==
THEN
PICT col row 2
\->LIST char REPL
IF
col lc # 1d - <
THEN
cw 'col' STO+
END
get EVAL
END DUP
68 ==
THEN
PICT col row 2
\->LIST char REPL
IF
col cw \>=
THEN
'col' cw STO-
END
get EVAL
END DUP
72 ==
THEN
PICT col row 2
\->LIST char REPL
# 0d 'col' STO # 0d
'row' STO get EVAL
END DUP
73 ==
THEN
PICT col row 2
\->LIST char REPL
IF
row hi >
THEN
'row' ch STO-
ELSE
PICT DUP # 0d ch 2
\->LIST OVER { # 0d
# 0d } el lr # 1d -
2 \->LIST SUB REPL {
# 0d # 0d } el ch
BLANK REPL
END
get EVAL
END DUP
74 ==
THEN
PICT # 0d row 2
\->LIST el bs row -
BLANK REPL get EVAL
END DUP
75 ==
THEN
PICT col row 2
\->LIST el col - ch
BLANK REPL get EVAL
END DUP
89 ==
THEN
PICT col row 2
\->LIST char REPL
WHILE
BUFLEN DROP NOT
REPEAT
END 1
SRECV DROP NUM 32 -
ch * 'row' STO
WHILE
BUFLEN DROP NOT
REPEAT
END 1
SRECV DROP NUM 32 -
cw * 'col' STO get
EVAL
END DUP
90 ==
THEN 27
CHR "/Z" + XMIT
DROP
END
END DROP
\>>
\<<
CASE DUP
127 ==
THEN
PICT col row 2
\->LIST spc REPL
IF
col cw \>=
THEN
'col' cw STO-
ELSE
lc 'col' STO 'row'
ch STO-
END
PICT col row 2
\->LIST cur REPL
END DUP
13 ==
THEN
PICT col row 2
\->LIST char REPL
# 0d 'col' STO get
EVAL
END DUP
DUP 10 \>= SWAP 12 \<=
AND
THEN nl
EVAL
END DUP
8 ==
THEN
PICT col row 2
\->LIST char REPL
IF
col cw \>=
THEN
'col' cw STO-
ELSE
lc 'col' STO
IF row hi >
THEN 'row' ch STO-
ELSE PICT DUP # 0d
ch 2 \->LIST OVER {
# 0d # 0d } el lr
# 1d - 2 \->LIST SUB
REPL { # 0d # 0d }
el ch BLANK REPL
END
END
get EVAL
END DUP
7 ==
THEN
440 .1 BEEP
END DUP
9 ==
THEN
PICT col row 2
\->LIST char REPL col
cw 2 * / # 1d + cw
2 * *
IF
DUP el >
THEN
DROP # 0d 'col' STO
get EVAL nl EVAL
ELSE
'col' STO get EVAL
END
END
END DROP
\>> 0 { } \->
write vt52 cntrl
room flags
\<< RCLF
'flags' STO
addcntrl EVAL 127
CHR csize \->GROB
'cur' STO 32 CHR
csize \->GROB DUP
'spc' STO 'char'
STO # 0d 'col' STO
# 0d 'row' STO ch
# 1d - 'hi' STO cw
# 1d - 'wi' STO el
cw - # 1d + 'lc'
STO # 64d ch / ch *
'bs' STO bs # 1d -
'es' STO bs ch -
'lr' STO -40 CF
OPENIO ERASE PICT {
# 0d # 0d } DUP
PVIEW cur REPL 7 CF
8 CF 9 CF 10 SF
WHILE 10
FS?
REPEAT
IF
BUFLEN DROP
THEN el
col - cw / B\->R
'room' STO ""
DO 1
SRECV DROP DUP NUM
IF DUP 31 > SWAP
127 < AND
THEN +
ELSE 9 SF SWAP
END
UNTIL
DUP SIZE room > 9
FS? OR BUFLEN DROP
NOT OR
END
IF
DUP SIZE DUP
THEN
cw * SWAP write
EVAL
ELSE
DROP2
END
IF 9
FS?C
THEN
IF NUM DUP 27 ==
THEN vt52 EVAL
ELSE cntrl EVAL
END
END
END
IF KEY
THEN
IF
DUP DUP DUP2 10 >
SWAP 54 < AND SWAP
51 \=/ AND 6 FS? AND
8 FC? AND 7 FS? OR
SWAP 71 \=/ AND
THEN
95 + 7 CF
ELSE
IF DUP DUP 71 \=/
SWAP 81 \=/ AND 8 FS?
AND
THEN 190 + 8 CF
END
END
IF
DUP 71 ==
THEN
IF 8 FS?C
THEN 10 CF
ELSE
IF 7 FS?C
THEN
IF 6 DUP FS?
THEN CF
ELSE SF
END
ELSE 7 SF
END
END DROP
ELSE
IF DUP 81 ==
THEN
IF 8 FS?C
THEN SBRK
ELSE 8 SF
END DROP
ELSE keymap SWAP
DUP SUB XMIT DROP
END
END
END
END
CLOSEIO TEXT flags
STOF
\>>
\>>
\>>
\>>
\>>
END_RPL
BEGIN_ASC vt52.asc
%%HP: ;
"D9D20E1632E4A20510000000000000000000E4A20510000000000000000000C2
A2050000C2A2050000C2A2050000C2A2050000E4A20510000000000000000000
E4A20510000000000000000000E4A20510000000000000000000E4A205100000
00000000000000E4A20510000000000000000000E4A205100000000000000000
00E4A20510003800000000000000ED2A2E4A20510008000000000000000E4A20
5100060000000000000001C432D6E203036F6C6D6E203027F677D6E203036572
7D6E2030370736D6E204036861627D6E2060B65697D61607D6E20205637D6E20
202637D6E2020C627D6E2020C636D6E20207796D6E20208696D6E202056C6D6E
2050363796A756D6E20203686D6E20203677E1632C9432D9D20E1632634E1D6E
203036F6C6D6E203027F677ED2A2387C12ABF1D6E203036F6C6D6E2020779676
BA1D6E203027F677D6E2020869676BA1ED2A2387C1C58C145632D6E204036861
62797632DCC02D6E2030365727AE8C193632B21301C432D6E2030765647E1632
C9432D9D20E16323392010000000000001503392010000000000003103392020
0000000000641033920100000000000031033920200000000000142033920100
0000000000310339201000000000000450339202000000000007210339201000
000000000550C53A2339202000000000004820173A2339202000000000005720
3392010000000000004303392020000000000028204B2A233920200000000000
10209C2A2339202000000000002020ED2A23392020000000000030203F2A2339
202000000000004020803A2339202000000000005020D13A2339202000000000
006020233A2339202000000000001120743A2339202000000000002120C53A23
39202000000000003120173A2339202000000000004120339201000000000000
0103392020000000000051203392010000000000001103392020000000000061
2033920100000000000021033920200000000000122033920100000000000031
0339202000000000002220339201000000000000410339202000000000003220
3392010000000000005103392020000000000042203392010000000000006103
3920200000000000522033920100000000000071033920200000000000622033
9201000000000000810339202000000000001320339201000000000000910339
2020000000000023203392010000000000000203392020000000000033203392
0100000000000012033920200000000000432033920100000000000022033920
2000000000005320339201000000000000320339202000000000006320339201
0000000000004203392020000000000024203392010000000000005203392020
0000000000342033920100000000000062033920100000000000016033920100
0000000000720339202000000000002620339201000000000000820339202000
0000000036203392010000000000009203392020000000000046203392010000
00000000030339202000000000005620339201000000000000130C2A20F3200E
2E2E2E2E2E2E2E2E2E2162636465666E2E2E2E2768696A6B6C6E2E2E2E2D6E6F
6071727E2E2E2E2374757677787E2E2E2E2E297A7E2E2E2E2E2E2E2E2738393F
2E2E2E2E2E2E2435363A2E2E2E2E2E2E2132333D2E2E2E2E2E2E203E202B2E2E
2E2E2E2E2E2E2E2E2142434445464E2E2E2E2748494A4B4C4E2E2E2E2D4E4F40
51525E2E2E2E2354555657585E2E2E2E2E295A5E2E2E2E2E2E2E2E2B7C382B5E
2E2E2E2E2E24252E562E2E2E2E2E2E2C2E70672E2E2E2E2E2E2D3F3F5C7E2E2E
2E2E2E2E2E2E2E2142434445464E2E2E2E2748494A4B4C4E2E2E2E2D4E4F4051
525E2E2E2E2354555657585E2E2E2E2E295A5E2E2E2E2E2E2E2C5D7E392D5E2E
2E2E2E2E2E2E2E2E2E2E2E2E2E2E2B30432E2E2E2E2E2E2E2E212E2A39C2A233
920100000000000093030132E0CF1E0CF166BC1AE8C1C423245632D6E2060B65
697D6160797632DCC0293632B2130C9432D9D20E1632634E1D6E203036F6C6D6
E203027F677ED2A2387C1D6E204036861627AE8C13CE22D6E203027F677D6E20
20C627EBBE1AFE22D9D20D6E2020368645632D6E203027F67797632B4402B213
05BF22D9D20634E178BF147A20E4A20510000000000000000000E4A205100000
00000000000000B213092CF1E4A20510000000000000000000D6E20203686ED2
A2387C1D6E202056C6D6E20205637ED2A2387C1C58C1AE8C1E4A205100000000
00000000000D6E2020C627ED2A2387C1D6E202056C6D6E20203686614E1AE8C1
B21305DF22D6E2030765647EB3A193632B21301C432D6E208016464636E64727
C6D6E2020E6C6E1632C9432D9D20E1632D6E2050363796A756DA5E1634E1D6E2
03036F6C6D6E203027F677ED2A2387C1E0CF1AE8C145632D6E203036F6C69763
2B44023CE22D6E203036F6C6D6E202056C6D5CE1AFE22D9D20E4A20510000000
00000000000045632D6E203036F6C697632DCC02D6E2030765647EB3A1D6E202
0E6C6EB3A1B21305BF22D9D20D6E2030765647EB3A1B21305DF2293632B2130C
9432D9D20E16328DBF133032780228DBF1F88E1D5032D9D20B2130496329C2A2
59E128DBF164BC1D8732D9D2078BF1339201000000000000560279E18A732D9D
20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861627AE8C13
CE22D6E203027F677D6E20208696D5CE1AFE22D9D2045632D6E203027F677976
32D6E2020368683502B21305DF22D6E2030765647EB3A1B21305DF2278BF1339
201000000000000660279E18A732D9D20634E1D6E203036F6C6D6E203027F677
ED2A2387C1D6E204036861627AE8C13CE22D6E203027F677D6E2020C627EBBE1
AFE22D9D20D6E2020368645632D6E203027F67797632B4402B21305DF22D6E20
30765647EB3A1B21305DF2278BF1339201000000000000760279E18A732D9D20
634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861627AE8C13CE
22D6E203036F6C6D6E2020C636E4A2051000100000000000000090DA1EBBE1AF
E22D9D20D6E2020367745632D6E203036F6C697632B4402B21305DF22D6E2030
765647EB3A1B21305DF2278BF1339201000000000000860279E18A732D9D2063
4E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861627AE8C13CE22
D6E203036F6C6D6E20203677B9DE1AFE22D9D2045632D6E203036F6C697632D6
E2020367783502B21305DF22D6E2030765647EB3A1B21305DF2278BF13392010
00000000000270279E18A732D9D20634E1D6E203036F6C6D6E203027F677ED2A
2387C1D6E204036861627AE8C1E4A2051000000000000000000045632D6E2030
36F6C697632DCC02E4A2051000000000000000000045632D6E203027F6779763
2DCC02D6E2030765647EB3A1B21305DF2278BF1339201000000000000370279E
18A732D9D20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861
627AE8C13CE22D6E203027F677D6E20208696D5CE1AFE22D9D2045632D6E2030
27F67797632D6E2020368683502B21305BF22D9D20634E178BF1E4A205100000
00000000000000D6E20203686ED2A2387C192CF147A20E4A2051000000000000
0000000E4A20510000000000000000000B2130D6E202056C6D6E2020C627E4A2
051000100000000000000090DA1ED2A2387C1C58C1AE8C147A20E4A205100000
00000000000000E4A20510000000000000000000B2130D6E202056C6D6E20203
686614E1AE8C1B21305DF22D6E2030765647EB3A1B21305DF2278BF133920100
0000000000470279E18A732D9D20634E1E4A20510000000000000000000D6E20
3027F677ED2A2387C1D6E202056C6D6E20202637D6E203027F67790DA1614E1A
E8C1D6E2030765647EB3A1B21305DF2278BF1339201000000000000570279E18
A732D9D20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E202056C6D6E
203036F6C690DA1D6E20203686614E1AE8C1D6E2030765647EB3A1B21305DF22
78BF1339201000000000000980279E18A732D9D20634E1D6E203036F6C6D6E20
3027F677ED2A2387C1D6E204036861627AE8C133032780228DBF1F88E1D5032D
9D20B2130496329C2A259E128DBF164BC133920100000000000023090DA1D6E2
0203686EEDA145632D6E203027F67797632DCC0233032780228DBF1F88E1D503
2D9D20B2130496329C2A259E128DBF164BC133920100000000000023090DA1D6
E20203677EEDA145632D6E203036F6C697632DCC02D6E2030765647EB3A1B213
05DF2278BF1339201000000000000090279E18A732D9D2033920100000000000
072066BC1C2A2090000F2A576BA157E128DBF1B21305DF22B21305DF228DBF19
3632B2130C9432D9D20E1632D8732D9D2078BF1339202000000000007210279E
18A732D9D20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E203037073
6AE8C13CE22D6E203036F6C6D6E20203677B9DE1AFE22D9D2045632D6E203036
F6C697632D6E2020367783502B21305BF22D9D20D6E2020C63645632D6E20303
6F6C697632DCC0245632D6E203027F67797632D6E2020368683502B21305DF22
634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E2030365727AE8C1B2130
5DF2278BF1339201000000000000310279E18A732D9D20634E1D6E203036F6C6
D6E203027F677ED2A2387C1D6E204036861627AE8C1E4A205100000000000000
0000045632D6E203036F6C697632DCC02D6E2030765647EB3A1B21305DF2278B
F178BF1339201000000000000010B9DE1DBBF1339201000000000000210CFCE1
387E18A732D9D20D6E2020E6C6EB3A1B21305DF2278BF1C53A2279E18A732D9D
20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861627AE8C13
CE22D6E203036F6C6D6E20203677B9DE1AFE22D9D2045632D6E203036F6C6976
32D6E2020367783502B21305BF22D9D20D6E2020C63645632D6E203036F6C697
632DCC023CE22D6E203027F677D6E20208696D5CE1AFE22D9D2045632D6E2030
27F67797632D6E2020368683502B21305BF22D9D20634E178BF1E4A205100000
00000000000000D6E20203686ED2A2387C192CF147A20E4A2051000000000000
0000000E4A20510000000000000000000B2130D6E202056C6D6E2020C627E4A2
051000100000000000000090DA1ED2A2387C1C58C1AE8C147A20E4A205100000
00000000000000E4A20510000000000000000000B2130D6E202056C6D6E20203
686614E1AE8C1B21305DF22B21305DF22D6E2030765647EB3A1B21305DF2278B
F1743A2279E18A732D9D20339202000000000000440339209990000000000010
4C5A1B21305DF2278BF1173A2279E18A732D9D20634E1D6E203036F6C6D6E203
027F677ED2A2387C1D6E204036861627AE8C1D6E203036F6C6D6E20203677ED2
A2EEDA150FA1E4A2051000100000000000000076BA1D6E20203677ED2A2EEDA1
EEDA13CE2278BF1D6E202056C6D5CE1AFE22D9D208DBF1E4A205100000000000
0000000045632D6E203036F6C697632DCC02D6E2030765647EB3A1D6E2020E6C
6EB3A1B21305BF22D9D2045632D6E203036F6C697632DCC02D6E2030765647EB
3A1B21305DF22B21305DF22B21305DF228DBF193632B21304B2A247A20B21301
C432D6E20507727964756D6E204067475323D6E205036E64727C6D6E204027F6
F6D6D6E205066C6167637E1632916C145632D6E205066C616763797632DCC02D
6E208016464636E64727C6EB3A133920200000000000721066BC1D6E20503637
96A756DA5E145632D6E203036572797632DCC0233920100000000000023066BC
1D6E2050363796A756DA5E178BF145632D6E203037073697632DCC0245632D6E
20403686162797632DCC02E4A2051000000000000000000045632D6E203036F6
C697632DCC02E4A2051000000000000000000045632D6E203027F67797632DCC
02D6E20203686E4A2051000100000000000000090DA145632D6E202086969763
2DCC02D6E20203677E4A2051000100000000000000090DA145632D6E20207796
97632DCC02D6E202056C6D6E2020367790DA1E4A205100010000000000000007
6BA145632D6E2020C63697632DCC02E4A20510000400000000000000D6E20203
68650FA1D6E20203686EEDA145632D6E2020263797632DCC02D6E20202637E4A
2051000100000000000000090DA145632D6E2020563797632DCC02D6E2020263
7D6E2020368690DA145632D6E2020C62797632DCC02339201000000000000049
5D2C15BE12F52E1634E147A20E4A20510000000000000000000E4A2051000000
0000000000000B213078BF10F2E1D6E2030365727AE8C1743A25D2C1C53A25D2
C1173A25D2C1339201000000000000010472C133032339201000000000000010
313C1D5032D9D203CE22780228DBF1AFE22D9D20D6E202056C6D6E203036F6C6
90DA1D6E2020367750FA1BB69145632D6E204027F6F6D697632DCC02C2A20500
003C0329C2A259E128DBF178BF164BC13CE2278BF1339201000000000000130D
5CE1DBBF1339202000000000007210EBBE1387E1AFE2276BA15BF22D9D20173A
2472C1DBBF1B21305DF22DE03278BF18B9C1D6E204027F6F6D6D5CE1173A2313
C1908E1780228DBF1F88E1908E19B6323CE2278BF18B9C178BF1AFE22D9D20D6
E20203677EEDA1DBBF1D6E20507727964756EB3A1B21305BF223FBF15DF223CE
22173A21A4C1AFE22D9D203CE2264BC178BF1339201000000000000720279E1A
FE22D9D20D6E204067475323EB3A1B21305BF22D9D20D6E205036E64727C6EB3
A1B21305DF22B21305DF22B21305DF223CE22378A1AFE22D9D203CE2278BF178
BF12ABF1339201000000000000010D5CE1DBBF1339201000000000000450EBBE
1387E1DBBF1339201000000000000150D9AE1387E1233A2313C1387E1C53A206
3C1387E1743A2313C1908E1DBBF1339201000000000000170D9AE1387E1AFE22
D9D2033920100000000000059076BA1743A25D2C1B21305BF22D9D203CE2278B
F178BF1339201000000000000170D9AE1DBBF1339201000000000000180D9AE1
387E1C53A2313C1387E1AFE22D9D2033920200000000000091076BA1C53A25D2
C1B21305DF22B21305DF223CE2278BF1339201000000000000170279E1AFE22D
9D203CE22C53A21A4C1AFE22D9D203392010000000000000105D2C1B21305BF2
2D9D203CE22743A21A4C1AFE22D9D203CE22233A278BF1313C1AFE225D2C15BF
22472C15DF22B21305BF22D9D20743A2472C1B21305DF22B21305DF228DBF1B2
1305BF22D9D203CE2278BF1339201000000000000180279E1AFE22D9D203CE22
C53A21A4C1AFE222C0225BF22D9D20C53A2472C1B21305DF228DBF1B21305BF2
2D9D20D6E2060B65697D61607DBBF178BF1C58C157E128DBF1B21305DF22B213
05DF22B21305DF22B2130496325DE12606E1D6E205066C6167637F76C1EF532E
F532EF532EF53293632B213031B5"
END_ASC
BYTES: #5B13h 5420
BEGIN_UU vt52.uue
begin 644 vt52
M2%!(4#0X+46=+>!A(TXJ4`$```````````!.*E`!````````````+"I0```L
M*E```"PJ4```+"I0``!.*E`!````````````3BI0`0```````````$XJ4`$`
M``````````!.*E`!````````````3BI0`0```````````$XJ4`$`````````
M``!.*E`!`(,`````````WJ+BI`(5`(``````````X*0"%0!@`````````!!,
M(VTN,##VQM;F`@-R;W=M+C`P5B?7Y@(#<W!C;2Y`,(86)M?F`@9K97EM87!M
M+B!0-M?F`@)B<VTN(,`FU^8"`FQC;2X@<)?6Y@(":&EM+B!0QM;F`@5C<VEZ
M96TN(#"&UN8"`F-W'C;"22.=+>!A(S;DT>8"`V-O;&TN,"#W=N<M*H/'(;H?
M;2XP,/;&UN8"`G=I9ZO1Y@(#<F]W;2X@@)9VMAK>HC)X'%S(064C;2Y`,(86
M)I=G(\T,TN8"`V-U<NK(D6,C*S$03"-M+C!P5D;G82.<--+9`AXV,I,"`0``
M````$`4S*1`````````3,),"`@``````1@$S*1`````````3,),"`@``````
M00(S*1`````````3,),"`0``````0`4S*2```````'`2,),"`0``````4`5<
MHS*3`@(``````(0"<:,RDP("``````!U`C,I$````````#0PDP("``````""
M`K2B,I,"`@```````0+)HC*3`@(```````("WJ(RDP("```````#`O.B,I,"
M`@``````!`((HS*3`@(```````4"':,RDP("```````&`C*C,I,"`@``````
M$0)'HS*3`@(``````!("7*,RDP("```````3`G&C,I,"`@``````%`(S*1``
M```````0,),"`@``````%0(S*1`````````1,),"`@``````%@(S*1``````
M```2,),"`@``````(0(S*1`````````3,),"`@``````(@(S*1`````````4
M,),"`@``````(P(S*1`````````5,),"`@``````)`(S*1`````````6,),"
M`@``````)0(S*1`````````7,),"`@``````)@(S*1`````````8,),"`@``
M````,0(S*1`````````9,),"`@``````,@(S*1`````````@,),"`@``````
M,P(S*1`````````A,),"`@``````-`(S*1`````````B,),"`@``````-0(S
M*1`````````C,),"`@``````-@(S*1`````````D,),"`@``````0@(S*1``
M```````E,),"`@``````0P(S*1`````````F,),"`0``````$`8S*1``````
M```G,),"`@``````8@(S*1`````````H,),"`@``````8P(S*1`````````I
M,),"`@``````9`(S*1`````````P,),"`@``````90(S*1`````````QP*("
M/P+@XN+BXN+BXN+B$B8V1E9FYN+BXG*&EJ:VQN;BXN+2YO8&%R?GXN+B,D=7
M9W>'Y^+BXN*2I^?BXN+BXN+B<H.3\^+BXN+BXD)38Z/BXN+BXN(2(S/3XN+B
MXN+B`N,"LN+BXN+BXN+BXN(2)#1$5&3DXN+B<H24I+3$Y.+BXM+D]`05)>7B
MXN(R155E=87EXN+BXI*EY>+BXN+BXN*RQX.RY>+BXN+B0E+B9>+BXN+BXL+B
M!W;BXN+BXN+2\_/%Y^+BXN+BXN+BXA(D-$149.3BXN)RA)2DM,3DXN+BTN3T
M!!4EY>+BXC)%565UA>7BXN+BDJ7EXN+BXN+BPM7GD]+EXN+BXN+BXN+BXN+B
MXN+BL@,TXN+BXN+BXN(2XJ*3+"HS*1`````````Y,!`C#OSAP!]FRZ&.'$PR
M0F4C;2Y@L%:6UQ8&EV<CS0R28R,K,<!)(YTMX&$C-N31Y@(#8V]L;2XP(/=V
MYRTJ@\?1Y@($8VAA<NK(,>PB;2XP(/=VU^8"`FQRONNA[R*=+=#F`@)C:%0V
MTN8"`W)O=WDVLD0@*S%0^R*=+6!#'H?[0:<"3BI0`0```````````$XJ4`$`
M```````````K,9#"'TXJ4`$```````````!M+B`PAN8M*H/'T>8"`F5L;2X@
M4#;G+2J#Q\&%'.K(X:0"%0```````````-#F`@)L<MZB,G@<;2X@4,;6Y@("
M8V@6Y*&.'"LQ4/TB;2XP<%9&YSL:.3:R$@/!--+F`@AA9&1C;G1R;&TN(.#&
MYF$CG#32V0(>-M+F`@5C<VEZ9:WE84,>;2XP,/;&UN8"`W)O=]ZB,G@<#ORA
MCAQ4-M+F`@-C;VQY-K)$(,,NTN8"`V-O;&TN(%#&UL4>^B[2V0).*E`!````
M````````5#;2Y@(#8V]L>3;2S"!M+C!P5D;G.QIM+B#@QN8[&BLQ4/LBG2W0
MY@(#9V5TOJ.Q$@/5+Y)C(RLQP$DCG2W@82/8^S$#(X<@@KT?C^C1!2.=+;`2
M`Y0VDBPJE1Z"O1]&R]%X(YTM<+@?,RD0````````92"7'J@WTMD"-N31Y@(#
M8V]L;2XP(/=VYRTJ@\?1Y@($8VAA<NK(,>PB;2XP(/=VU^8"`FAI7>RA[R*=
M+4!E(VTN,"#W=I=G(VTN(#"&AE,@*S%0_2)M+C!P5D;G.QHK,5#](H?[,9,"
M`0``````8`9RZ8%Z(YTM8$,>;2XP,/;&UN8"`W)O=]ZB,G@<;2Y`,(86)J>.
M',,NTN8"`W)O=VTN(,`FY[L>^B[2V0)M+B`PAD9E(VTN,"#W=I=G(TL$LA(#
MU2_2Y@(#9V5TOJ.Q$@/5+W*X'S,I$````````&<@EQZH-]+9`C;DT>8"`V-O
M;&TN,"#W=N<M*H/'T>8"!&-H87+JR#'L(FTN,##VQM;F`@)L8TXJ4`$``0``
M```````)K>&['OHNTMD";2X@,'9'92-M+C`P]L:69R-+!+(2`]4OTN8"`V=E
M=+ZCL1(#U2]RN!\S*1````````!H()<>J#?2V0(VY-'F`@-C;VQM+C`@]W;G
M+2J#Q]'F`@1C:&%RZL@Q[")M+C`P]L;6Y@("8W>;[:'O(ITM0&4C;2XP,/;&
MEF<C;2X@,':'4R`K,5#](FTN,'!61N<[&BLQ4/TBA_LQDP(!```````@!W+I
M@7HCG2U@0QYM+C`P]L;6Y@(#<F]WWJ(R>!QM+D`PAA8FIXX<3BI0`0``````
M`````%0VTN8"`V-O;'DVTLP@3BI0`0```````````%0VTN8"`W)O=WDVTLP@
M;2XP<%9&YSL:*S%0_2*'^S&3`@$``````#`'<NF!>B.=+6!#'FTN,##VQM;F
M`@-R;W?>HC)X'&TN0#"&%B:GCAS#+M+F`@-R;W=M+B"`EM;%'OHNTMD"5#;2
MY@(#<F]W>3;2Y@("8V@X!;(2`[4OTMD"-N1QN!].*E`!````````````;2X@
M,(;F+2J#QY'"'W0JX*0"%0```````````."D`A4```````````"P$@-M+B!0
MQM;F`@)L<DXJ4`$``0`````````)K>$M*H/'P84<ZLA!IP).*E`!````````
M````3BI0`0```````````"LQT.8"`F5L;2X@,(9F01[JR+$2`]4OTN8"`V=E
M=+ZCL1(#U2]RN!\S*1````````!T()<>J#?2V0(VY.&D`A4```````````#0
MY@(#<F]WWJ(R>!QM+B!0QM;F`@)B<VTN,"#W=I?0&A;DH8X<;2XP<%9&YSL:
M*S%0_2*'^S&3`@$``````%`'<NF!>B.=+6!#'FTN,##VQM;F`@-R;W?>HC)X
M'&TN(%#&UN8"`V-O;`FMT>8"`F-H%N2ACAQM+C!P5D;G.QHK,5#](H?[,9,"
M`0``````D`ARZ8%Z(YTM8$,>;2XP,/;&UN8"`W)O=]ZB,G@<;2Y`,(86)J>.
M'#,P<@@BV/OQB!Y=,-+9`BLQ0&DCR:)2Z2'8^V&T'#,I$````````#*0T!IM
M+B`PAN;>&E0VTN8"`W)O=WDVTLP@,S!R""+8^_&('ETPTMD"*S%`:2/)HE+I
M(=C[8;0<,RD0````````,I#0&FTN(#!VY]X:5#;2Y@(#8V]L>3;2S"!M+C!P
M5D;G.QHK,5#](H?[,9,"`0````````ERZ8%Z(YTM,),"`0``````<`)FR\&B
M`@D`\*)UMAIU'H*]'RLQ4/TB*S%0_2+8^Y%C(RLQP$DCG2W@82.--]+9`H?[
M,9,"`@``````)P%RZ8%Z(YTM8$,>;2XP,/;&UN8"`W)O=]ZB,G@<;2XP,`<W
MIHX<PR[2Y@(#8V]L;2X@,':WV1[Z+M+9`E0VTN8"`V-O;'DVTN8"`F-W.`6R
M$@.U+]+9`FTN(,`V1F4C;2XP,/;&EF<CS0Q"92-M+C`@]W:79R-M+B`PAH93
M("LQ4/TB-N31Y@(#8V]L;2XP(/=VYRTJ@\?1Y@(#8W5RZLBQ$@/5+W*X'S,I
M$````````!,@EQZH-]+9`C;DT>8"`V-O;&TN,"#W=N<M*H/'T>8"!&-H87+J
MR.&D`A4```````````!`92-M+C`P]L:69R/-#-+F`@-G972^H[$2`]4O<K@?
MA_LQDP(!`````````9OMT;L?,RD0````````$L#/'H/G@7HCG2W0Y@(";FR^
MH[$2`]4O<K@?7*,BEQZH-]+9`C;DT>8"`V-O;&TN,"#W=N<M*H/'T>8"!&-H
M87+JR#'L(FTN,##VQM;F`@)C=YOMH>\BG2U`92-M+C`P]L:69R-M+B`P=H=3
M("LQ4/LBG2W0Y@(";&-4-M+F`@-C;VQY-M+,(,,NTN8"`W)O=VTN(("6UL4>
M^B[2V0)4-M+F`@-R;W=Y-M+F`@)C:#@%LA(#M2_2V0(VY'&X'TXJ4`$`````
M``````!M+B`PAN8M*H/'D<(?="K@I`(5````````````X*0"%0``````````
M`+`2`VTN(%#&UN8"`FQR3BI0`0`!``````````FMX2TJ@\?!A1SJR$&G`DXJ
M4`$```````````!.*E`!````````````*S'0Y@("96QM+B`PAF9!'NK(L1(#
MU2^R$@/5+]+F`@-G972^H[$2`]4O<K@?1Z,BEQZH-]+9`C,I(````````$0P
MDP*9"0```````<2EL1(#U2]RN!]QHR*7'J@WTMD"-N31Y@(#8V]L;2XP(/=V
MYRTJ@\?1Y@($8VAA<NK(T>8"`V-O;&TN(#!VYRTJ[JU1\!I.*E`!``$`````
M````9ZO1Y@("8W?>HN+>&NZM,>PBA_O1Y@("96Q=[*'O(ITM@+T?3BI0`0``
M`````````%0VTN8"`V-O;'DVTLP@;2XP<%9&YSL:;2X@X,;F.QHK,5#[(ITM
M0&4C;2XP,/;&EF<CS0S2Y@(#9V5TOJ.Q$@/5+[(2`]4OLA(#U2^"O1\Y-K(2
M`[2B0J<"*S$03"-M+E!P)Y=&5];F`@1V=#4R;2Y0,.9&)\?6Y@($<F]O;6TN
M4&%G8VYV$C&<9!92-M+E!@QA9V-I=G(\T,TN8""&%D9&-N=')LOJ,QDP("
M```````G`6;+T>8"!6-S:7IEK>5!92-M+C`P5B>79R/-##*3`@$``````"`#
M9LO1Y@(%8W-I>F6MY7&X'U0VTN8"`W-P8WDVTLP@5#;2Y@($8VAA<GDVTLP@
M3BI0`0```````````%0VTN8"`V-O;'DVTLP@3BI0`0```````````%0VTN8"
M`W)O=WDVTLP@;2X@,(;FI`(5`!``````````D-`:5#;2Y@(":&EY-M+,(&TN
M(#!VYZ0"%0`0`````````)#0&E0VTN8"`G=I>3;2S"!M+B!0QM;F`@)C=PFM
MX:0"%0`0`````````'"V&E0VTN8"`FQC>3;2S"!.*E`!`$``````````;2X@
M,(96\!IM+B`PAN;>&E0VTN8"`F)S>3;2S"!M+B`@-N>D`A4`$`````````"0
MT!I4-M+F`@)E<WDVTLP@;2X@(#;7Y@("8V@)K4%E(VTN(,`FEV<CS0PRDP(!
M````````E-7"4>LA7^)A0QYT*N"D`A4```````````#@I`(5````````````
ML!(#A_L!+QYM+C`P5B>GCAQ'HU(M'%RC4BT<<:-2+1PS*1`````````00"<<
M,S`RDP(!`````````1/#T04CG2TP["*'((*]'_HNTMD";2X@4,;6Y@(#8V]L
M":W1Y@("8W<%K[%K&50VTN8"!')O;VUY-M+,("PJ4```PS"2+"J5'H*]'X?[
M8;0<PRYRN!\S*1`````````QT,4>O?LQDP("```````G`;[K,7@>^BYRMAJU
M+]+9`G&C0B<<O?NQ$@/5+](.(X?[@9L<;2Y`(/?VUM;%'G&C,C$<">AQ""+8
M^_&('@GHD6LCPRYRN!^XR7&X'_HNTMD";2X@,';GWAJ]^]'F`@5W<FET9;ZC
ML1(#M2\ROQ_5+S+L(G&C$DH<^B[2V0+#+F*T'(?[,9,"`0``````<`)RZ:'O
M(ITMT.8"!'9T-3*^H[$2`[4OTMD";2Y0,.9&)\?F.QHK,5#](BLQ4/TB*S%0
M_2+#+C*'&OHNTMD"PRYRN!^'^R&Z'S,I$````````!#0Q1Z]^S&3`@$`````
M`$`%ONLQ>!Z]^S&3`@$``````!`%G>HQ>!XRHS(Q'(/GP34J8,,Q>!Y'HS(Q
M'`GHT;L?,RD0````````<="I'H/GH>\BG2TPDP(!``````!0"6>K<30JU<*Q
M$@.U+]+9`L,N<K@?A_LQDP(!```````0!YWJT;L?,RD0````````@="I'H/G
MP34J$\,Q>![Z+M+9`C,I(````````!EPMAI<HU(M'"LQ4/TB*S%0_2+#+G*X
M'S,I$````````'$@EQ[Z+M+9`L,NPC4JH<2A[R*=+3"3`@$````````!U<*Q
M$@.U+]+9`L,N<C0JH<2A[R*=+3#L(C*C<K@?$\.A[R+5PE'[(G3"4?TB*S%0
M^R*=+7`T*G3"L1(#U2^R$@/5+X*]'RLQ4/LBG2TP["*'^S&3`@$``````!`(
M<NFA[R*=+3#L(ERC$DH<^BXB#"*U+]+9`ERC0B<<*S%0_2+8^[$2`[4OTMD"
M;2Y@L%:6UQ8&U[L?A_O!A1QU'H*]'RLQ4/TB*S%0_2(K,5#](BLQ0&DCU1YB
<8!YM+E!@QA9V-O=G'/XUXE\C_C7B7R,Y-K(2`[(2
`
end
sum -r/size 58226/7503 section (from "begin" to "end")
sum -r/size 23883/5428 entire input file
END_UU